<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>代理Proxy控制函数</title>
</head>
<body>
    <script>
        function factorial(num) {
            return num == 1 ? 1 : (num * factorial(num - 1));
        }

        let proxy = new Proxy(factorial,{
            // 第一个参数是函数，第二个参数是传入的第一个参数，第三个参数是外部传入的第二个参数
            apply(func,obj,args){
                console.time("run");
                // this表示当前的上下文
                func.apply(this,args);
                console.timeEnd("run");
            }
        });
        // 传入的第二个值是函数的参数（因为是apply,所以用[]包裹，放在一个数组中）
        proxy.apply({},[5]);
    </script>
</body>
</html>